home *** CD-ROM | disk | FTP | other *** search
/ SGI Freeware 2002 November / SGI Freeware 2002 November - Disc 1.iso / dist / fw_exmh.idb / usr / freeware / lib / exmh-2.5 / mimeSun.tcl.z / mimeSun.tcl
Text File  |  2002-07-08  |  10KB  |  232 lines

  1. # mimeSun.tcl
  2. # Support to frob X-sun-attachments into mime format
  3. # There are just a couple checks in mime.tcl,
  4. # and then these routines massage the header information
  5.  
  6. # This is called from Mime_Init
  7. proc MimeSunInit {} {
  8.     global mimeSunMap
  9.     #
  10.     # This map is generated by the ce.process script in the exmh misc directory
  11.     # It looks at the Classing Engine database as output by the ce_db_build
  12.     # program and makes some decisions about a MIME type.
  13.  
  14.     set mimeSunMap(binder-prog)        {application/x-sun-prog; prog=binder}
  15.     set mimeSunMap(calctool-prog)      {application/x-sun-prog; prog=calctool}
  16.     set mimeSunMap(ae-prog)            {application/x-sun-prog; prog=ae}
  17.     set mimeSunMap(clock-prog)         {application/x-sun-prog; prog=clock}
  18.     set mimeSunMap(cmdtool-prog)       {application/x-sun-prog; prog=cmdtool}
  19.     set mimeSunMap(colorchooser)       application/x-colorchooser
  20.     set mimeSunMap(dbxtool-prog)       {application/x-sun-prog; prog=dbxtool}
  21.     set mimeSunMap(cm-prog)            {application/x-sun-prog; prog=cm}
  22.     set mimeSunMap(experiment)         text/plain
  23.     set mimeSunMap(filemgr-prog)       {application/x-sun-prog; prog=filemgr}
  24.     set mimeSunMap(fontedit-prog)      {application/x-sun-prog; prog=fontedit}
  25.     set mimeSunMap(iconedit-prog)      {application/x-sun-prog; prog=iconedit}
  26.     set mimeSunMap(imagetool-prog)     {application/x-sun-prog; prog=imagetool}
  27.     set mimeSunMap(mailtool-prog)      {application/x-sun-prog; prog=mailtool}
  28.     set mimeSunMap(window-prog)        {application/x-sun-prog; prog=window}
  29.     set mimeSunMap(perfmeter-prog)     {application/x-sun-prog; prog=perfmeter}
  30.     set mimeSunMap(printtool-prog)     {application/x-sun-prog; prog=printtool}
  31.     set mimeSunMap(shelltool-prog)     {application/x-sun-prog; prog=shelltool}
  32.     set mimeSunMap(snapshot-prog)      {application/x-sun-prog; prog=snapshot}
  33.     set mimeSunMap(sundraw-prog)       {application/x-sun-prog; prog=sundraw}
  34.     set mimeSunMap(IslandDraw-prog)    {application/x-sun-prog; prog=IslandDraw}
  35.     set mimeSunMap(sunpaint-prog)      {application/x-sun-prog; prog=sunpaint}
  36.     set mimeSunMap(IslandPaint-prog)   {application/x-sun-prog; prog=IslandPaint}
  37.     set mimeSunMap(sunwrite-prog)      {application/x-sun-prog; prog=sunwrite}
  38.     set mimeSunMap(IslandWrite-prog)   {application/x-sun-prog; prog=IslandWrite}
  39.     set mimeSunMap(tapetool-prog)      {application/x-sun-prog; prog=tapetool}
  40.     set mimeSunMap(textedit-prog)      {application/x-sun-prog; prog=textedit}
  41.     set mimeSunMap(X-prog)             {application/x-sun-prog; prog=X}
  42.     set mimeSunMap(sun-raster)         image/x-sun-raster
  43.     set mimeSunMap(sun-icon-image)     image/x-sun-icon
  44.     set mimeSunMap(lotus-spreadsheet)  application/x-lotus-123
  45.     set mimeSunMap(pict-file)          image/x-pict
  46.     set mimeSunMap(ppm-file)           image/x-ppm
  47.     set mimeSunMap(photocd-file)       image/x-photocd
  48.     set mimeSunMap(pj-file)            image/x-pj
  49.     set mimeSunMap(pgm-file)           image/x-pgm
  50.     set mimeSunMap(pbm-file)           image/x-pbm
  51.     set mimeSunMap(ilbm-file)          image/x-ilbm
  52.     set mimeSunMap(pi1-file)           image/x-pi1
  53.     set mimeSunMap(pcx-file)           image/x-pcx
  54.     set mimeSunMap(tga-file)           image/x-tga
  55.     set mimeSunMap(yuv-file)           image/x-yuv
  56.     set mimeSunMap(xim-file)           image/x-xim
  57.     set mimeSunMap(mtv-file)           image/x-mtv
  58.     set mimeSunMap(qrt-file)           image/x-qrt
  59.     set mimeSunMap(imgw-file)          image/x-imgw
  60.     set mimeSunMap(sld-file)           image/x-sld
  61.     set mimeSunMap(spc-file)           image/x-spc
  62.     set mimeSunMap(spu-file)           image/x-spu
  63.     set mimeSunMap(gould-file)         image/x-gould
  64.     set mimeSunMap(raw-file)           image/x-raw
  65.     set mimeSunMap(rgb3-file)          image/x-rgb3
  66.     set mimeSunMap(fs-file)            image/x-fs
  67.     set mimeSunMap(fits-file)          image/x-fits
  68.     set mimeSunMap(lispm-file)         image/x-lispm
  69.     set mimeSunMap(rawg-file)          image/x-rawg
  70.     set mimeSunMap(hips-file)          image/x-hips
  71.     set mimeSunMap(mac-file)           image/x-mac
  72.     set mimeSunMap(atk-file)           image/x-atk
  73.     set mimeSunMap(brush-file)         image/x-brush
  74.     set mimeSunMap(cmu-file)           image/x-cmu
  75.     set mimeSunMap(mgr-file)           image/x-mgr
  76.     set mimeSunMap(g3-file)            image/x-g3
  77.     set mimeSunMap(img-file)           image/x-img
  78.     set mimeSunMap(pi3-file)           image/x-pi3
  79.     set mimeSunMap(xbm-file)           image/x-xbm
  80.     set mimeSunMap(ybm-file)           image/x-ybm
  81.     set mimeSunMap(xwd-file)           image/x-xwd
  82.     set mimeSunMap(msdos-executable)   application/x-dos
  83.     set mimeSunMap(compress)           application/x-compress
  84.     set mimeSunMap(framemaker-document) application/x-frame
  85.     set mimeSunMap(mail-file)          message/rfc822
  86.     set mimeSunMap(mail-message)       text/plain
  87.     set mimeSunMap(gif-file)           image/gif
  88.     set mimeSunMap(tiff-file)          image/x-tiff
  89.     set mimeSunMap(jpeg-file)          image/jpeg
  90.     set mimeSunMap(sunwrite-document)  application/x-sunwrite
  91.     set mimeSunMap(IslandWrite-document) application/x-IslandWrite
  92.     set mimeSunMap(font-file)          application/x-fontedit
  93.     set mimeSunMap(sundraw-document)   application/x-sundraw
  94.     set mimeSunMap(IslandDraw-document) application/x-IslandDraw
  95.     set mimeSunMap(ae-file)            application/x-suncalendar
  96.     set mimeSunMap(audio-file)         audio/x-sunaudio
  97.     set mimeSunMap(audio-prog)         {application/x-sun-prog; prog=audio}
  98.     set mimeSunMap(postscript-file)    application/postscript
  99.     set mimeSunMap(xpm-file)           image/x-xpm
  100.     set mimeSunMap(text)               text/plain
  101.     set mimeSunMap(default)            text/plain
  102.     set mimeSunMap(default-app)        application/x-default-app
  103.     set mimeSunMap(default-doc)        text/plain
  104.     set mimeSunMap(sun-executable)     application/x-sun-executable
  105.     set mimeSunMap(shell-script)       application/x-shell-script
  106.     set mimeSunMap(cshell-script)      application/x-shell-script
  107.     set mimeSunMap(GUIDE-file)         application/x-guide
  108.     set mimeSunMap(GUIDE-project-file) application/x-guide
  109.     set mimeSunMap(Makefile)           application/x-makefile
  110.     set mimeSunMap(compose-prog)       {application/x-sun-prog; prog=compose}
  111.     set mimeSunMap(readme-file)        text/plain
  112.     set mimeSunMap(AnswerBook)         application/x-answerbook
  113. }
  114.  
  115. # This is called from MimeParseMulti
  116. # to map the sun headers into mime-like headers
  117. proc MimeMapSunHeaders { tkw part } {
  118.     global mimeHdr mimeSunMap
  119.     if ![catch {set mimeSunMap($mimeHdr($part,hdr,x-sun-data-type))} type] {
  120.     set mimeHdr($part,hdr,content-type) $type
  121.     }
  122.     if ![catch {set mimeHdr($part,hdr,x-sun-data-name)} name] {
  123.     set mimeHdr($part,hdr,content-description) $name
  124.     }
  125.     if ![catch {set mimeHdr($part,hdr,x-sun-charset)} charset] {
  126.     set mimeHdr($part,param,charset) $charset
  127.     }
  128.     if ![catch {set mimeHdr($part,hdr,x-sun-encoding-info)} encoding] {
  129.     set mimeHdr($part,hdr,content-transfer-encoding) $encoding
  130.     }
  131. }
  132.  
  133. proc Mime_ShowShellScript { tkw part } {
  134.     global mimeHdr
  135.     TextButton $tkw "Run attached shell script" [list exec sh $mimeHdr($part,file) &]
  136.     $tkw insert insert \n\n
  137.     TextButton $tkw "Save shell script" [list Mime_SavePiece $part $mimeHdr($part,type)]
  138.     $tkw insert insert \n\n
  139.     if ![info exists mimeHdr($part,showScript)] {
  140.     set mimeHdr($part,showScript) 0
  141.     }
  142.     if {$mimeHdr($part,showScript)} {
  143.     TextButton $tkw "Hide shell script" [list MimeSunHideScript $tkw $part]
  144.     $tkw insert insert \n
  145.     Mime_ShowText $tkw $part
  146.     } else {
  147.     TextButton $tkw "View shell script" [list MimeSunViewScript $tkw $part]
  148.     $tkw insert insert \n
  149.  
  150.     }
  151. }
  152. proc MimeSunViewScript { tkw part } {
  153.     global mimeHdr
  154.     set mimeHdr($part,showScript) 1
  155.     MimeRedisplayPart $tkw $part
  156. }
  157. proc MimeSunHideScript { tkw part } {
  158.     global mimeHdr
  159.     set mimeHdr($part,showScript) 0
  160.     MimeRedisplayPart $tkw $part
  161. }
  162. proc Mime_ShowSunCalendar { tkw part } {
  163.     global mimeHdr
  164.     TextButton $tkw "Pass to Calendar Manager" [list MimeSunAppointment $tkw $part]
  165.     $tkw insert insert \n
  166.     Mime_ShowText $tkw $part
  167. }
  168. proc MimeSunAppointment { tkw part } {
  169.     global mimeHdr
  170.     if [catch {open $mimeHdr($part,file)} in] {
  171.     Exmh_Status $in
  172.     return
  173.     }
  174.     set stuff [read $in]
  175.     close $in
  176.     MimeSunAppInner $stuff
  177. }
  178. proc MimeSunAppSelection {} {
  179.     if [catch {selection get} stuff] {
  180.     if [catch {selection get -selection clipboard} stuff] {
  181.         Exmh_Status "No selection"
  182.         return
  183.     }
  184.     }
  185.     MimeSunAppInner $stuff
  186. }
  187. proc MimeSunAppInner { stuff } {
  188.     global field
  189.     regsub -all {"} $stuff {} stuff
  190.     regsub {\*\* Calendar Appointment \*\*} $stuff {} stuff
  191.  
  192.     set field(what) {}
  193.     foreach line [split $stuff \n] {
  194.     if [regexp {^[     ]*([^:]+):(.+)$} $line x key value] {
  195.         set what [string tolower $key]
  196.         set field($what) $value\n
  197.     } else {
  198.         append field(what) $line\n
  199.     }
  200.     }
  201.     if ![info exists field(date)] {
  202.     Exmh_Status "No date in calendar appointment"
  203.     return
  204.     }
  205.     if {[info commands clock] == "clock"} {
  206.     if [catch {clock format [clock scan $field(date)] -format %D} date] {
  207.         Exmh_Status $date
  208.         return
  209.     }
  210.     } else {
  211.     set date [string trim $field(date) \ \t\n]
  212.     }
  213.     if ![info exists field(start)] {
  214.     Exmh_Status "No start time in calendar appointment"
  215.     return
  216.     }
  217.     if {[info exists field(stop)] && ![info exists field(end)]} {
  218.     set field(end) $field(stop)
  219.     }
  220.     if ![info exists field(end)] {
  221.     Exmh_Status "No end time in calendar appointment"
  222.     return
  223.     }
  224.     regsub -all \[\ \t\n\.] $field(start) {} start
  225.     regsub -all \[\ \t\n\.] $field(end) {} end
  226.  
  227.     Exmh_Status "cm_insert -d $date -s $start -e $end -w $field(what)"
  228.     if [catch {exec cm_insert -d $date -s $start -e $end -w $field(what)} error] {
  229.     Exmh_Status $error
  230.     }
  231. }
  232.